Modernly, the use of PCs (personal computers), including so-called laptop and notebook computers, is increasingly common and the computers themselves are of increasing computer powerful, decreasing thermal power and ever more complex.
A vast majority of PCs have a controlling software, for example an OS (Operating System) such as Microsoft® Windows® Vista® or a like commercial product. Many varieties of OS are available largely due to the need to make design tradeoffs. In particular, feature richness with attendant complexity and size is traded off against (relatively) limited capabilities with increased speed (especially speed of operation and of load time).
Thus a need has existed to provide for the use of multiple OS within a computer and various approaches, each with its own tradeoffs, have been used.
One approach, so-called “dual-boot” involves selecting and loading the desired OS from a relatively cold state, this has a disadvantage of slowness but advantages that resources are devoted, rather than shared or partitioned.
Other approaches can involve virtualization, these have an advantage of providing for rapid switches between OS environments but there is a disadvantage in that the most complex and popular OS softwares available are not designed to work well in virtualized environments and further tradeoffs and impacts result. Moreover virtualization may require hardware features addressed thereto and hence be of relatively less universal application. And unfortunately the vendors of complex OS software have little incentive to make their products work well in peaceful coexistence with simpler OS products through virtualization.
Simpler OS products have advantages beyond speed, for example where such OS is “Open Source” the source code is smaller and hence more comprehensible. Moreover less complex software tends to be less vulnerable to malware attack.
There are further alternatives to dual-boot and virtualization (with different again tradeoffs) and the present invention is related to such.